package com.hyts.apilog.annotation;

import com.hyts.apilog.config.AccessType;
import com.hyts.apilog.config.OperationType;

import java.lang.annotation.*;

/**
 * project-name:coffice-toolbox
 * package-name:com.hyts.apilog.annotation
 * author:Libo/Alex
 * create-date:2019-06-15 01:31
 * copyright:libo-hyts-github
 * email:libo2dev@aliyun.com
 * description:此类主要用于: 记录api服务接口的日志记录标记
 */
@Target({ ElementType.PARAMETER, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ApiLog {


    /**
     * 模块名称 直接根据系统获取：建议手动提供，系统获取只会根据系统类当前包
     * @return
     */
    String moduleName() default "" ;

    /**
     * 包名 直接根据系统获取
     * @return
     */
    String packageName() default "" ;

    /**
     * 类名：className 直接根据系统获取
     * @return
     */
    String className() default "" ;


    /**
     * 访问类型：未知匿名
     * @return
     */
    AccessType accessType() default AccessType.OTHER;

    /**
     * 数据库操作
     * @return
     */
    OperationType.DB dbOperation() default OperationType.DB.OTHER;

    /**
     * 错误类型
     * @return
     */
    OperationType.Error errorType() default OperationType.Error.OTHER;

    /**
     * 文件类型
     * @return
     */
    OperationType.File fileOperation() default OperationType.File.OTHER;

    /**
     * 系统类型
     * @return
     */
    OperationType.System systemOperation() default OperationType.System.OTHER;

    /**
     * 保存参数
     * @return
     */
    boolean saveParam() default true;

}
